/**
 * MD5加密工具类 - 提供消息摘要算法的加密服务
 *
 * 开发人员：徐少洋
 * 开发时间：2025-11-05 至 2025-11-08
 * 模块职责：实现MD5哈希算法，用于支付签名、密码加密等安全场景
 *
 * 技术要点：
 * - Java标准MD5消息摘要算法实现
 * - UTF-8字符集编码处理
 * - 十六进制字符串输出格式
 * - 异常处理和安全性考虑
 * - 线程安全的设计模式
 *
 * 开发故事：负责系统安全加密的核心工具类，与支付签名和密码加密深度配合，确保系统数据传输和存储的安全性。
 */
package com.pbl.util;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;

public final class Md5Util {
    private Md5Util() {}

    /**
     * 生成MD5十六进制字符串摘要
     * @param input 输入字符串
     * @return MD5十六进制字符串（32位小写）
     */
    public static String md5Hex(String input) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] digest = md.digest(input.getBytes(StandardCharsets.UTF_8));
            StringBuilder sb = new StringBuilder(digest.length * 2);
            for (byte b : digest) {
                String hex = Integer.toHexString((b & 0xFF) | 0x100).substring(1);
                sb.append(hex);
            }
            return sb.toString();
        } catch (Exception e) {
            throw new RuntimeException("MD5 error", e);
        }
    }
}
